#if !defined(__APP_BUFFER_H)
#define __APP_BUFFER_H
#include <pthread.h>
typedef struct{
    char *ptr;//缓冲区指针
    int total_size;//缓冲区总大小
    int offset;//缓冲区偏移量
    int len;//内容长度
    //初始化互斥锁
    pthread_mutex_t mutex;
} Buffer;


/** 
 * @function: 初始化缓冲区
 * @param: total_size 缓冲区大小
 * @return: 返回缓冲区指针
*/
Buffer *app_buffer_init(int total_size);

/**
 * @function: 释放缓冲区
 * @param: buffer 缓冲区指针
 */
void app_buffer_free(Buffer *buffer);

/**
 * @function: 向缓冲区写入数据
 * @param: buffer 缓冲区指针
 * @param: data 写入数据
 * @param: len 写入数据长度
 * @return: 返回0为成功，返回-1为失败
 */
int app_buffer_write(Buffer *buffer,char *data,int len);

/**
 * @function: 从缓冲区读取数据
 * @param: buffer 缓冲区指针
 * @param: data 读取数据的容器
 * @param: len 读取数据长度
 * @return: 返回读取的数据0成功-1失败
 */
int app_buffer_read(Buffer *buffer,char *data,int len);
#endif // __APP_BUFFER_H
